// Изучаю Александреску
import std.stdio;

//____________________________________________
bool find1(int[] стогСена, int иголка) {
	foreach(el; стогСена) {
		if(el == иголка) return true;
	}
	return false;
}

//____________________________________________
T[] find2(T, E)(T[] стогСена, E иголка) 
	if(is(typeof(стогСена[0] != иголка) == bool)) 
{
	while(стогСена.length > 0 && стогСена[0] != иголка) {
		стогСена = стогСена[1 .. $];
	}
	return стогСена;
}

//____________________________________________
void ch(int[] стогСена) {
	стогСена[0] = 20;
}

//____________________________________________
R find3(R, T)(R стогСена, T иголка) if(is(typeof(стогСена.front != иголка) == bool)) {
	while(!стогСена.empty && стогСена.front != иголка) {
		стогСена.popFront();
	}
	return стогСена;
}


void main() {
	int[] стогСена = [2, 7, 1, 8, 9];
	writeln(стогСена);
	ch(стогСена);
	writeln(стогСена);
	
	writeln(5, "  ", find1(стогСена, 5));

	auto z = find2(стогСена, 8);
	writeln(z);

	writeln("Hello...");

	auto z2 = find2(стогСена, 8);
	// writeln(z2);
	
}